<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <!-- <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //1.defer;2、async 3、定时器setTimeout 4、让外部js文件在页面底部，最后引入


        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        //ECMAScript：ECMA组织制定的一套标准javascript语法，是所有浏览器厂商共同遵守的一套JS语法工业标准
        //DOM：document object model文档对象模型，是W3C组织推荐的处理可拓展标记语言的标准编程接口。
        //BOM：brower object model，浏览器对象模型，它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构


        // 3.JavaScript 的数据类型有哪些？（5）
        //基本/简单数据类型：String字符串、Number数字、Boolean布尔、Undefined、Null、Symblo
        //引用/复杂数据类型：Array数组、Object对象、Fnction函数


        // 4.如何进行数据类型的判断？（5）
        //1、typeof：返回的是相对于的数据类型（但是对于null/array/object检测结果为object，不能进一步判断）
        //instanceof：返回的是布尔值，（但是不能区别undefined和null，而且简单数据类型还得是new声明出来的）
        //3.Object.prototype.toString.call(检测的数据)


        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        //null：表示什么都没有，表示一个空对象的引用，不存在这个对象，空的对象指针。
        //undefined；一个没有值的变量，就是声明了变量，但是没有赋值。


        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        //null和undefined。它们两个虽然是不同的数据类型，但是用instanceof检测数据类型都false。
        //==是比较值
        //===比较值和数据类型


        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        //continue，是跳过使用它的语句，忽略它往下继续循环
        //break，遇到使用它的语句，就停止循环


        // 8.如何判断字符串内是否包含指定字符？（5）
        //indexOf(想查找的字符，开始查找的下标)，从开始下标正向往右寻找
        //lastIndexOf(想查找的字符，开始查找的下标)，从开始查找的下标，向左开始，倒着寻找
        //如果输出了0或正整数，那就能字符串内包含指定字符
        //如果输出了-1，那就是字符串内不包含指定字符

        //includes()判断数组是否包含有指定的值（返回布尔值）


        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        //concat（）   连接———————————————————不会
        //join（）     转换为字符串————————————不会
        //slice（）    截取———————————————————不会
        //splice()     获取规定范围内的数组——————会
        //reverse()    翻转—————————————————————会
        //push（）pop（）    末端添加/删除数组成员—————————会
        //unshift()shift（） 首端添加/删除数组成员—————————会

        //indexOf()     指定字符串首次出现的位置——————不会
        //lastIndexOf() 指定字符串最后出现的位置——————不会
        //includes()    判断是否有指定的字符串————————不会
    </script> -->

    <!-- 10、11 -->
    <!-- <script>
        // 10. 请写出下面语句的输出结果：（5）
        var bar = true,
            number = 0;
        console.log(bar + 0); //NaN————————正确答案1
        console.log(bar + "xyz"); //"truexyz"
        console.log(bar + true); //ture————————正确答案2
        console.log(+true); //1
        console.log(!'bluej'); //false
        console.log(number++); //0
        console.log(++number); //2
        console.log(number); //2
        console.log('———————————————————');


        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提（5）

        let nowTime = +new Date();
        let endTime = +new Date(window.prompt("请输入目标时间")); //2021-9-8 24:00:00

        let times = (endTime - nowTime) / 1000; //倒计时剩余的秒数

        let d = parseInt(times / 60 / 60 / 24);
        let h = parseInt(times / 60 / 60 % 24);
        let m = parseInt(times / 60 % 60);
        let s = parseInt(times % 60);

        //0补位
        function padT(t) {
            return (t < 10) ? '0' + t : t;
        }
        h = padT(h);
        m = padT(m);
        s = padT(s);

        console.clear();

        if (times > 0) {
            console.log('距离您输入的目标时间还有: ' + d + '天' + h + '时' + m + '分' + s + '秒');
        } else if (times <= 0) {
            console.log('目标时间已过去');
        } else {
            console.log('请按此时间格式输入：xxxx-xx-xx xx:xx:xx');

        }
    </script> -->

    <!-- 12、13 -->
    <!-- <script>
        // 12.把下面数组成员排序打乱；（5）
        let arr = [10, 20, 30, 40, 50, 60];

        let newArr = [];
        for (i = 1; i < arr.length; i++) {
            let sub = Math.floor(Math.random() * arr.length) //*6---[0~6)---0/1/2/3/4/5,得到了随机下标,arr[sub]arr的随机数组成员
                // console.log(sub);

            if (newArr.indexOf(arr[sub]) == -1) {
                newArr.push(arr[sub])
            } else {
                i--;
            };

        };
        console.log(newArr);



        // 13.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
        //素数除了 1 和它本身以外,不能被任何整数整除的数

        function fn2(min, max) {
            let res = Math.random() * (max - min);
            return Math.floor(res + min);
        };
        let num = console.log(fn2(10, 58));

        num % 1 = 0 && num % num = 0
    </script> -->


    <!-- 14、15 -->
    <script>
        // 14. 将多个数组进行去重合并；（10）
        var arr1 = [1, 2, 3],
            arr2 = [2, 3, 4, 5];
        let arr3 = arr1.concat(arr2);
        // console.log(arr3);//(7) [1, 2, 3, 2, 3, 4, 5]
        let newarr14 = [];

        for (var i = 0; i < arr3.length; i++) {
            if (arr3.indexOf(arr3[i]) == arr3.lastIndexOf(arr3[i])) {
                newarr14.push(arr3[i])
            };
        }

        console.log(newarr14);



        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        arr4 = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        let arr44 = [];
        let count = 0;

        for (var i = 0; i < arr4.length; i++) {

            if (arr4.indexOf(arr4[i]) != arr4.lastIndexOf(arr4[i]) && !arr44.includes(arr4[i])) {
                arr44.push(arr4[i])
                count++;
            };

        }
        console.log(arr44);
        console.log(count++);
    </script>



    <!-- 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10） -->
    <script>
        var arr16 = [{
            name: "111",
            sex: "boy",
            age: 18,
            count: 20
        }, {
            name: "222",
            sex: "girl",
            age: 17,
            count: 30
        }, {
            name: "333",
            sex: "boy",
            age: 16,
            count: 40
        }, {
            name: "444",
            sex: "girl",
            age: 15,
            count: 50
        }, {
            name: "555",
            sex: "boy",
            age: 20,
            count: 60
        }, {
            name: "666",
            sex: "girl",
            age: 13,
            count: 70
        }, {
            name: "777",
            sex: "boy",
            age: 14,
            count: 80
        }]

        for (let i = 0; i < arr16.length; i++) {
            if (arr16[i]["age"] < 18) {
                arr16[i]["count"] *= arr16[i]["count"];
                console.log(arr16[i]);
            }
        }
    </script>
</body>

</html>